# 从llama_index.core模块导入Document类
from llama_index.core import Document

# 从llama_index.core.schema模块导入TextNode和BaseNode类
from llama_index.core.schema import TextNode, BaseNode

# 判断Document是否是TextNode的子类，并输出结果
print(f"Document是否是TextNode的子类: {issubclass(Document, TextNode)}")
# 判断TextNode是否是Document的子类，并输出结果
print(f"TextNode是否是Document的子类: {issubclass(TextNode, Document)}")

# 判断Document是否继承自BaseNode，并输出结果
print(f"Document是否是BaseNode的子类: {issubclass(Document, BaseNode)}")
# 判断TextNode是否继承自BaseNode，并输出结果
print(f"TextNode是否是BaseNode的子类: {issubclass(TextNode, BaseNode)}")

# 创建一个Document对象，包含文本内容和元数据
doc = Document(
    text="这是一个完整的文档内容。它可能很长，包含很多信息。",
    metadata={"source": "example.txt", "author": "张三"},
)

# 输出Document对象的文本内容
print(f"\n文档文本: {doc.text}")
# 输出Document对象的元数据
print(f"文档元数据: {doc.metadata}")
# 输出Document对象的节点ID
print(f"文档ID: {doc.node_id}")

# 创建一个TextNode对象用于对比，包含文本内容和元数据
node = TextNode(
    text="这是一个文本节点。",
    metadata={"source": "manual", "type": "example"},
)

# 输出TextNode对象的文本内容
print(f"\n节点文本: {node.text}")
# 输出TextNode对象的元数据
print(f"节点元数据: {node.metadata}")
# 输出TextNode对象的节点ID
print(f"节点ID: {node.node_id}")
